﻿#define CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//int main()
//{
//	int n, sum;
//	sum = 1;
//	scanf_s("%d", &n);
//	for (int i = 1; i <= n; i++)
//	{
//		sum= sum*i;
//	}
//	printf("%d", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int n,sum;
//	sum = 0; n = 1;
//		for(int i=1;i<=100;i++)
//	{
//			sum = sum + 2 * i;
//	}
//	printf("%d", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int i=1,n,sum;
//	sum = 0;
//	scanf_s("%d", &n);
//	while(i<=n)
//	{
//		sum = sum + i;
//		i++;
//	}
//	printf("%d", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int i, n,flag;
//	double sum,item;
//	flag = 1; sum = 0;
//	scanf_s("%d", &n);
//	for (i = 1; i <= n; i++)
//	{
//		item = flag * 1.0 / (2 * i - 1);
//		sum = sum +item;
//		flag = -flag;
//	}
//	printf("%lf", sum);
//	return 0;
//}
//#include <stdio.h>
//#include <math.h>
//double fact(int n)
//{
//	int i,sum;
//	sum = 1;
//	for (i = 1; i <= n; i++)
//	{
//		sum = sum * i;
//	}
//	return sum;
//}
//int main()
//{
//	int i,n,sum;
//	sum = 1;
//	scanf_s("%d", &n);
//	for (i = 1; i <= n; i++)
//	{
//		sum = 1;
//		sum = sum*fact(i);
//		printf("%d\n", sum);
//	}
//		return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int j, o,n,a;
//	j = 0; o = 0;
//	scanf_s("%d", &n);
//	for (int i = 1; i <= n; i++)
//	{
//		scanf_s("%d", &a);
//		if (a % 2 == 0)
//		{
//			o++;
//		}
//		else
//		{
//			j++;
//		}
//	}
//	printf("%d %d", j, o);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int i,num,l;
//	num = 0; l = 0;
//	double score,sum;
//	sum = 0;
//	scanf_s("%lf", &score);
//	while (score >= 0)
//	{
//		l++;
//		sum = sum + score;
//		if (score < 60)
//		{
//			num++;
//		}
//		scanf_s("%lf", &score);
//	}
//	printf("%d", num);
//	printf("%lf", sum / l);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int n,a,count;
//	scanf_s("%d", &n);
//	count =0;
//	while(n!=0)
//	{
//
//		n = n / 10;
//		count++;
//		if (n == 0)
//		{
//			printf("%d", count);
//			break;
//		}
//	}
//#include <stdio.h>
//
//int main()
//{
//	int n, i;
//	scanf_s("%d", &n);
//	if (n == 1)
//	{
//		printf("no");
//	}
//	else if (n == 2)
//	{
//		printf("yes");
//	}
//	else
//	{
//		for (i = 2; i < n; i++)
//		{
//			if (n % i == 0)
//			{
//			printf("no");
//			break;
//			}	
//			else
//			{
//					printf("yes");
//					break;
//		     }
//		}	
//	}return 0;
//}
//#include <stdio.h>
//double fact(int n)
//{
//	int sum;
//	sum =1;
//	for (int i = 1; i <= n; i++)
//	{
//		sum = sum * i;
//	}
//	return sum;
//}
//int main()
//{
//	int n, sum;
//	sum = 0;
//	scanf_s("%d", &n);
//	for (int i = 1; i <= n; i++)
//	{
//		sum = sum + fact(i);
//	}
//	printf("%d", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int i, j, n,sum,item;
//	sum = 0; 
//	scanf_s("%d", &n);
//		for (i = 1; i <= n; i++)
//		{
//			for (j = 1; j <= i; j++)
//			{
//				item = 1;
//				item=item * j;
//			}
//			sum = sum + item;
//		}
//	printf("%d", sum);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int t, x1, x2,n;
//	x1 = 1; x2 = 1;
//	scanf_s("%d", &n);
//	if (n >= 1 && n <= 46)
//	{
//		printf("%10d %10d", x1, x2);
//		for (int i = 3; i <= n; i++)
//		{
//			t = x1;
//			x1 = x2;
//			x2 = t + x2;
//			printf("%10d ", x2);
//
//			if (i % 5 == 0)
//			{
//				printf("\n");
//			}
//		}
//	}
//	return 0;
//}
//
// 
//#include <stdio.h>
//int main()
//{
//	int n, m,k,count,flag;
//	flag = 0; k = 0; count = 0;
//	scanf_s("%d %d", &m, &n);
//	for (k = m; k <= n; k++)
//	{
//		if (k <= 1) {
//			flag = 0;
//		}
//		else if (k == 2) {
//			flag = 1;
//		}
//		else
//		{
//			flag = 1;
//			for (int i = 2; i < k; i++)
//			{
//				if (k % i == 0)
//				{
//					flag = 0;
//					break;
//				}
//			}
//		}
//		if (flag == 1)
//		{
//			printf("%6d", k);
//			count++;
//			if (count % 10 == 0)
//			{
//				printf("\n");
//			}
//		}
//	}
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int n,count=0;
//	char A;
//	scanf_s("%d",&n);
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <=n+1-i; j++)
//		{
//			A = 'A' + count;
//			count++;
//			printf("%c ", A);
//		}
//		printf("\n");
//	}
//	return 0;
//}
//#include  <stdio.h>
//int main()
//{
//	int n, i, j, count;
//	char A;
//	count = 0;
//	scanf_s("%d", &n);
//	for (i = 1; i <= n; i++)
//	{
//		for (j = 1; j <= n + 1 - i; j++)
//		{
//			A = 'A' + count;
//			count++;
//			printf("%c ", A);
//		}
//		printf("\n");
//	}
//
//	return 0;
//}
/*已知函数e^x可以展开为幂级数1+x+x^2/2!+x^3/3!+⋯+x^k/k!+⋯。
现给定一个实数x，要求利用此幂级数部分和求e^x的近似值，
求和一直继续到最后一项的绝对值小于0.00001。
提示：
绝对值用fabs
输入在一行中给出一个实数x∈[0,5]。
在一行中输出满足条件的幂级数部分和，保留小数点后四位。
题目保证计算结果不超过双精度范围。*/
//#include <stdio.h>
//#include <math.h>
//int main()
//{
//	int i, j, count;
//	count = 1;
//	double x, sum1,sum,item;
//	sum = 1; 
//	scanf_s("%lf", &x);
//	for (i = 1; i <= count; i++)
//	{
//		sum1 = 1;
//		for (j = 1; j <= count; j++)
//		{
//			sum1 = sum1 * j;
//		}
//		item = pow(x, count) / sum1;
//		sum = sum + item;
//		if (fabs(item) >= 0.00001)
//			count++;
//	}
//	printf("%.4lf", sum);
//	return 0;
//}
/*从键盘输入任意正整数，判断该数是否是回文数。
所谓回文数就是从左到右读这个数与从右到左读这个数是一样的。
例如12321、1221都是回文数。*/
//#include <stdio.h>
//#include <math.h>
//int main()
//{
//	int n, a, count, sum, t,m,sum1;
//	scanf_s("%d", &n);
//	while (n > 0)
//	{
//		sum = 0; count = 0,sum1=0;
//		scanf_s("%d", &a);
//		m = a;
//		while(a!=0)
//		{
//			t = a;
//			a = a % 10;
//			//printf("%d", a);
//			sum = sum + pow(10, count) * a;
//			//sum1 = sum1 + pow(10, ) * a;
//			//printf("%d\n", sum);
//			count++;
//			a = t / 10;
//			if (a == 0)
//			{
//				//printf("%d", count);
//				printf("%d\n", sum);
//				break;
//			}
//		}
//		while(count>0)
//		{
//			a = m % 10;
//			sum1 = sum1 + pow(10,count-1 ) * a;
//			//printf("%d\n", sum1);
//			a = m / 10;
//			m = a;
//			if (m == 0)
//			{
//				printf("%d\n", sum1);
//				break;
//			}
//			count--;
//		}
//		n--;
//}
//	return 0;
//}
/*将一正整数的各个位数相加（即横向相加），若加完后的值大于10的话，
则继续将各位数进行横向相加直到其值小于10为止，
在数学上所得的值称为该数的Digit root。
例如38的Digit root为2，因为3+8=11，11大于10则再加一次
//，1+1=2，2小于10，则2为38的Digit root。*/
//#include <stdio.h>
//int main()
//{
//	int n,count,t,sum;
//	count = 0; sum = 0;
//	scanf_s("%d", &n);
//	for (int i = 0; i <= count; i++)
//	{
//		t = n;
//		n = n % 10;
//		sum = sum + n;
//		count++;
//		n = t / 10;
//		if (n == 0)
//		{
//			if (sum < 10)
//			{
//				break;
//			}
//			n = sum;
//			 sum = 0;
//		}
//	}
//	printf("%d", sum);
//	return 0;
//}
/*对于给定的正整数N，求它的位数及其各位数字之和。
输入在一行中给出一个不超过的正整数N。
在一行中输出N的位数及其各位数字之和，中间用一个空格隔开。
输入样例1
321 3 6*/
//#include <stdio.h>
//int main()
//{
//	int n,count,t,sum;
//	count = 0; sum = 0;
//	scanf_s("%d", &n);
//	for (int i = 0; i <= count; i++)
//	{
//		t = n;
//		n = n % 10;
//		count++;
//		sum = sum + n;
//		n = t / 10;
//		if (n == 0)
//		{
//			break;
//		}
//	}
//	printf("%d %d", count, sum);
//	return 0;
//
//}
/*统计其中数字字符、空格和其他字符的个数。建议使用switch语句编写。
输入在一行中给出若干字符，最后一个回车表示输入结束，不算在内。
blank = 空格个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。请注意，等号的左右各有一个空格，逗号后有一个空格。
Reold 12 or 45T  blank = 3, digit = 4, other = 8*/
//#include <stdio.h>
//int main()
//{
//	char ch;
//	int digit=0,blank=0, other=0;
//	do
//	{
//		scanf_s("%c", &ch);
//		if (ch > '0' && ch <= '9')
//		{
//			digit++;
//		}
//		else if (ch == ' ')
//		{
//			blank++;
//		}
//		else
//		{
//			other++;
//		}
//	} while (ch != '\n');
//	other--;
//		printf("%d %d %d", digit, blank, other);
//		return 0;
//	}
/* 2/1+3/2+5/3+8/5+... 的前N项之和。
注意该序列从第2项起，每一项的分子是前一项分子与分母的和，分母是前一项的分子。
输入在一行中给出一个正整数N。
在一行中输出部分和的值，精确到小数点后两位。题目保证计算结果不超过双精度范围。
平台会对你编写的代码进行测试：
测试输入：20 预期输出：32.66*/
//#include <stdio.h>
//int main()
//{
//	int n,t;
//	double sum,a,b;
//	sum = 0;
//	a = 2; b = 1;
//	scanf_s("%d", &n);
//	for (int i = 1; i <= n; i++)
//	{
//		sum = sum + a / b;
//		t = a;
//		a = a + b;
//		b = t;
//		//printf("%lf %lf", a, b);
//	}
//		//sum = sum + a / b;
//	printf("%.2lf", sum);
//	return 0;
//}
/* 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
输入在一行中给出一个正实数eps。
在一行中按照“sum = S”的格式输出部分和的值S，精确到小数点后六位
。题目保证计算结果不超过双精度范围。
测试输入：4E-2 预期输出：sum = 0.854457*/
//#include <stdio.h>
//#include <math.h>
//int main()
//{
//	double sum, eps, item = 1;
//	int b = 1, flag = 1; sum = 0;
//	scanf_s("%lf", &eps);
//	while (fabs(item) > eps)
//	{
//		sum = sum + item;
//		flag = -flag;
//		b = b + 3;
//		item = 1 * 1.0 * flag / b;
//	}
//	sum = sum + item;
//	printf("%.6lf", sum);
//	return 0;
//}
/*不少于六个字符
必须包含字母
必须包含数字
必须包含特殊字符 特殊字符即ASCII码表中除字母和数字以外的可见字符
。（可见字符在ASCII码表中的十进制范围为33到126）
现需要你编写代码，判断一串用户设计的密码是否合法，如不合法，输出不合法的原因。
如不满足上述条件中的多个，输出编号小的一个原因即可。
asdfg
输入一串密码，以回车作为结束符
输出密码是否合法的判断结果，并输出原因
输入样例1
asdfg*/
//#include <stdio.h>
//int main()
//{
//	char ch;
//	int letter = 0, digit = 0, other = 0;
//	while ((ch = getchar()) != '\n')
//	{
//		if (ch >= '0' && ch <= '9')
//			digit++;
//		else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')
//			letter++;
//		else if (ch >= 33 && ch <= 126)
//			other++;
//	}
//		if (letter <6)
//		printf("必须有字母");
//	else if (digit ==0)
//		printf("必须有数字");
//	
//	else if (other == 0)
//		printf("必须有特殊字符");
//	else
//		printf("设置成功");
//	return 0;
//}
/*小明最开始有x元钱（x为小数），经过n次（n为整数）收支之后，还剩下多少元钱？
第一行输入两个数字x和n
收支信息用+或者-来表示。+表示收入，-表示支出。
金额信息为一个数字。
一个小数点后保留两位的数字，表示经过n次交易之后的余额
输入样例
//10.5 3  + 1 - 4 + 0.5 8.00*/
//#include <stdio.h>
//int main()
//{
//	int n;
//	double x,a,sum;
//	scanf_s("%lf%d",&x,&n);
//	getchar();
//	char op;
//	sum = x;
//		for (int i = 1; i <= n; i++)
//		{
//			scanf_s("%c%lf",&op,&a);
//			getchar();
//			if (op == '+')
//			{
//				sum = sum + a;
//				printf("%lf", x);
//			}
//			else if (op == '-')
//			{
//				sum = sum - a;
//			}
//		}
//	printf("%.2lf",sum);
//	return 0;
//
//}
//#include <stdio.h>
//int main()
//{
//	double x, a;
//	int n, i;
//	scanf_s("%lf%d", &x, &n);
//	//getchar();
//	char op;
//	double sum;
//	sum = x;
//	for (i = 0; i < n; i++)
//	{
//		scanf_s("%c%lf", &op, &a);
//		getchar();
//		if (op == '+')
//		{
//			sum = sum + a;
//		}
//		else if (op == '-')
//		{
//			sum = sum - a;
//		}
//	}
//	printf("%.2lf", sum);
//	return 0;
//}
///*从键盘输入一个字符和一个正整数，对该字符加密处理。加密的方式为：
//（1）如果该字符为大写或小写的英文字母，则根据输入的整数后移。
//例如输入"a 4",则输出"e"。若输入"z 4"，则输出"d"；若输入"z 28"，则输出"b"
//（2）如果该字符为0~9的数字，则原样输出。例如输入"9 4",则输出"9"；
//（3）如果是其他字符，则无输出。*/
//#include <stdio.h>
//int main()
//{
//	char ch;
//	int n;
//	scanf_s("%c %d",&ch,&n);
//	n = n % 26;
//	if (ch >= 'a' && ch <= 'z')
//	{
//		ch = ch + n;
//		printf("%c", ch);
//		if (ch > 'z')
//	{	
//			ch = ch - 26;
//	}
//		printf("%c", ch);
//	}
//	else if (ch >= 'A' && ch <= 'Z')
//	{
//		ch = ch + n;
//		if (ch > 'Z')
//	{
//		ch = ch - 26;	
//	}printf("%c", ch);
//	}
//	else if (ch >= '0' && ch <= '9')
//	{
//		printf("%c", ch);
//	}
//	return 0;
//}
//#include <stdio.h>
//int f(int a);
//int main()
//{
//	int n, a, j, count = 0;
//	scanf_s("%d", &n);
//	for (int i = 1; i <= n; i++)
//	{
//		scanf_s("%d\n", &a);
//		j = f(a);
//	   printf("%d", j);
//	}
//	return 0;
//}
//int f(int a)
//{
//	int m,count=0;
//	m = a;
//	int r,n,j=1,t;
//	for (int j = 1; j <= m; j++)
//	{
//		t = j;
//		r = m % t;
//		while (r != 0)
//		{
//			a = t;
//			t = r;
//			r = a % t;
//		}
//		if (r == 0)
//		{
//			if (t == 1)
//		{
//           count++;
//		}
//		}
//	}		return count;
//}
//#include <stdio.h>
//int f(int a);
//int gcd(int a,int j);
//int main()
//{
//	int n,c;
//	scanf_s("%d", &n);
//		c = f(n);
//		printf("%d", c);
//	return 0;
//}
//int gcd(int a,int j)
//{
//	int r;
//		r = a % j;
//		while (r != 0)
//		{
//			a = j;
//			j = r;
//			r = a % j;
//		}
//		return j;
//	}
//int f(int n)
//{
//int count;
//	for (int i = 1; i <= n; i++)
//	{
//		int a;
//		scanf_s("%d", &a);
//		 count = 0;
//		for (int j = 1; j <= a; j++)
//		{
//			if (gcd(a,j) == 1)
//		{
//			count++;
//		}
//		}
//	}return count;
//}
//本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
//输入两个正整数 m 和 n（1≤m≤n≤500），求 m 和 n 之间的素数和。
//素数就是只能被1和自身整除的正整数。注意：1不是素数，2是素数。
//要求定义并调用函数prime（p）判断 p 是否为素数，
//当p为素数时返回1，否则返回0。定义并调用函数prime_sum(m, n)，
//该函数返回区间[m, n]内所有素数的和。
//两个正整数 m 和 n（1≤m≤n≤500）
//测试输入：1 10预期输出：Sum of(2 3 5 7) = 17
//#include <stdio.h>
//int prime(int p);
//int prime_sum(int m, int n);
//int main()
//{
//	int m, n,c,s;
//	scanf_s("%d %d", &m, &n);
//	printf("Sum of ( ");
//	for(int p=m;p<=n;p++)
//	{
//		if(prime(p)==1)
//		{
//			printf("%d ", p);
//		}
//	}s = prime_sum(m, n);
//	printf(") = ");
//	printf("%d", s);
//	return 0;
//}
//int prime(int p)
//{
//	if (p == 1)
//	{
//		return 0;
//	}
//	else if (p == 2)
//	{
//		return 1;
//	}
//	else 
//	{
//		for (int i = 2; i < p; i++)
//		{
//			if (p % i == 0)
//			{
//				return 0;
//			}
//		}return 1;//
//	}
//}
//int prime_sum(int m, int n)
//{
//	int sum = 0;
//	for (int p = m; p <= n; p++)
//	{
//		if(prime(p)==1)
//		sum = sum + p;
//	}
//	return sum;
//}
//本题要求实现一个判断素数的简单函数，并利用该函数验证哥德巴赫猜想：
//任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。
//输入两个正整数m和n（0 <= m <= n <= 100），将m和n之间的偶数表示成两个素数之和，
//输出时每行显示5组。要求定义并调用函数prime（m）判断m是否为素数，当m为素数时返回1，否则返回0。
//输入
//两个正整数m和n（0 <= m <= n <= 100）
//89 100  90 = 7 + 83, 92 = 3 + 89, 94 = 5 + 89, 96 = 7 + 89, 98 = 19 + 79  100 = 3 + 97,
//
//#include <stdio.h>
//int prime(int m);
//int prime_(int m, int n);
//int main()
//{
//	int m, n, count = 0;
//	scanf_s("%d %d", &m, &n);
//	for (int i = m; i <= n; i++)
//	{
//		if (i % 2 == 0 && i >= 6)
//		{
//			int a = prime_(i, n);
//			if (prime_(m, n) != 0)
//				count++;
//			if (count % 5 == 0)
//			{
//				printf("%d=%d+%d\n", i, a, i - a);
//			}
//			else
//			{
//				printf("%d=%d+%d, ", i, a, i - a);
//			}
//		}
//	}
//	return 0;
//}
//int prime_(int m, int n)
//{
//			for (int a = 3; a < 100; a += 2)
//			{
//				if (prime(a) == 1 && prime(m - a) == 1)
//				{
//					return a;
//				}
//			}	return 0;
//}
//int prime(int m)
//{
//	if (m == 1)
//	{
//		return 0;
//	}
//	else if (m == 2)
//	{
//		return 1;
//	}
//	else
//	{
//		for (int i = 2; i < m; i++)
//		{
//			if (m % i == 0)
//			{
//				return 0;
//			}
//		}
//		return 1;
//	}
//}
#include <stdio.h>
int prime_(int i, int n);
int prime(int m);
int main()
{
	int m, n,count=0;
	scanf_s("%d %d", &m, &n);
		for (int i = m; i <= n; i++)
		{
			int a;
			if (i % 2 == 0 && i >= 6)
			{
				a = prime_(i, n);
				if (a != 0)
				{
					count++;
					if (count % 5 == 0)
					{
						printf("%d=%d+%d\n", i, a, i - a);
					}
					else
					{
						printf("%d=%d+%d,", i, a, i - a);
					}
				}
			}
		}
		return 0;
}
	int prime_(int i, int n)
	{
		for (int j = 3; j < (i / 2); j += 2)
		{
			if (prime(j) == 1 && prime(i - j) == 1)
			{
				return j;
			}
		}
		return 0;
	}
int prime(int m)
{
	if (m == 1)
	{
		return 0;
	}
	else if (m == 2)
	{
		return 1;
	}
	else
	{
		for (int i = 2; i < m; i++)
		{
			if (m % i == 0)
			{
				return 0;
			}
		}
		return 1;
	}
}